9.1.1 单维度因子分析
单维度因子分析:可以反映近缘种同种因子的变异情况/物种本身的生态生理界限/物种的环境适应性差异与环境异质性/群落构建特征之间的潜在联系;以上这些工作的开展,可以基于因子的数据的统计学分布特征来进一步判读,还可以利用传统的回归分析方法来评估不同因子的作用差异响应特征;
## 单维度因子分析
### 回归分析
评估不同环境因子间的相关关系(##推断因果关系);
评估在地理尺度上环境因子与经纬度等的相关关系与变化规律
评估因子分布与物种分布概率的相关关系;
### 单因素置换方差分析
比较近缘种/同种生活环境因子的变异情况(##以种群为单位)
### 核密度平滑可视化
更好的展示数据特征和结构,在数据量较少的情况下;
9.1.1 单维度因子分析
9.1.1.1 单因素置换方差分析
```{r eval =F}
单因素置换方差分析的研究目的:
比较不同近缘种相同环境因子的差异;
R实现:
原理:
使用 lmPerm 内置的 anop 函数来实现单因素方差置换检验,这个检验的零假设是两组数据的无差别。但是因为数据的相对有限性,这里采用方差置换检验的方式,通过利用样本数据的全(或随机)排列的方式实现数据混合后随机置换,进行方差检验以此达到更为真实反应总体分布差异情况.
注意进行avop()分析时,需要将分类变量转换成为数值类型,如0/1
成功实验;
library(lmPerm) sdmdata$species <- factor(sdmdata$species)
使用sink()函数来批量导出分析结果:
sink("./单因素方差置换检验结果.txt") data <- c(2:10) lapply(data,function(x){summary(aovp(sdmdata[,x]~species,data =sdmdata,perm="Prob"))})
out.avop
sink(NULL)
##### 9.1.1.2 非参数Kruskal-Wallis 多重秩和检验
```{r eval =F}
# 检验原理:
1、Kruskal Wallis多重秩和检验
首先,将多组样本数据混合并按升序排序,求出各变量值的秩;然后,考察各组秩的均值是否存在显著差异。容易理解:如果各组秩的均值不存在显著差异,则是多组数据充分混合,数值相差不大的结果,可以认为多个总体的分布无显著差异;反之,如果各组秩的均值存在显著差异,则是多组数据无法混合,某些组的数值普遍偏大,另一些组的数值普遍偏小的结果,可以认为多个总体的分布有显著差异。
# 检验目的:
## 比较不同物种同一环境因子之间是否处存在显著差异
# 使用PMCMR::posthoc.kruskal.nemenyi.test()
## 在进行检验时,因子变量不能使用字符串,只能使用数字代替;
species <- c(rep(1, nrow(xizrcn)), rep(2, nrow(xizlcn)), rep(3, nrow(xizmcn)))
## 使用rbind来合并得到矩阵的行矩阵,使用cbind来合并列矩阵;
## sdmdatad的第一列为species ,处理时需要注意;
sdmdata <- data.frame(cbind(species , rbind(xizrcn, xizlcn,xizmcn)))
#########################################################
## 使用非参数Kruskal-Wallis多重秩和检验分析比较小样本的显著性:
## 构建东西分布:1代表东部,2代表西部;
spec <- c(rep(1,nrow(se1)),rep(2,nrow(se2)))
data2 <-data.frame(cbind(spec,rbind(exdata1,exdata2)))
data2$spec <- factor(data2$spec)
## install.packages("PMCMRplus")
library(PMCMRplus)
library(PMCMR)
options (warn = -1)
kry <- function(x){posthoc.kruskal.nemenyi.test(data2[,x]~spec,data = data2,dist="Chisq")}
lapply(2:20,kry)
9.1.1.3 posthoc.kruskal.nemenyi.test计算
## posthoc.kruskal.nemenyi.test:
library(PMCMR)
cls <- c(rep("sa",nrow(sa_ap)),rep("as",nrow(as_ap)),rep("au",nrow(au_ap)),rep("na",nrow(na_ap)))
nam3 <- names(sa_ap)
px1 <- data.frame(cbind(c(sa_ap[,1],as_ap[,1],au_ap[,1],na_ap[,1]),cls) )
names(px1)=c("BIO16","CLS")
px1$CLS <- factor(px1$CLS)
posthoc.kruskal.nemenyi.test(BIO6~ap_nums ,data=ap_values, dist="Tukey")